home *** CD-ROM | disk | FTP | other *** search
/ Programmer Power Tools / Programmer Power Tools.iso / modem / tcomm11.arc / LITECOMM.H next >
Text File  |  1987-06-07  |  5KB  |  169 lines

  1. /*
  2. **    litecomm.h
  3. **        Communications support for Datalight (tm) C
  4. **        Copyright (c) 1987 - Information Technology, Ltd.,
  5. **                             All Rights Reserved
  6. */
  7.  
  8. #ifndef TRUE
  9. #define TRUE 1
  10. #endif
  11. #ifndef FALSE
  12. #define FALSE 0
  13. #endif
  14. #define ERR (-1)
  15.  
  16. #ifndef LITECOMM_H                /* if not already included        */
  17.  
  18. #define COM1BASE    0x3f8        /* base for com port 1 */
  19. #define COM2BASE    0x2f8        /* base for com port 2 */
  20. #define IRQ1        0x10        /* int req mask for port 1 - irq4 */
  21. #define IRQ2        0x08        /* int req mask for port 2 - irq3 */
  22. #define COM1VEC        0x0c        /* vector for port 1 */
  23. #define COM2VEC        0x0b        /* vector for port 2 */
  24.  
  25. #ifdef KRNL
  26. unsigned COM3BASE = 0x3e8;        /* user changeable com port 3 */
  27. unsigned COM4BASE = 0x2e8;        /* user changeable com port 4 */
  28. char IRQ3 = IRQ1;                /* ditto for int levels */
  29. char IRQ4 = IRQ2;
  30. unsigned COM3VEC = 0x0c;
  31. unsigned COM4VEC = 0x0b;
  32. #else
  33. extern unsigned COM3BASE;
  34. extern unsigned COM4BASE;
  35. extern char IRQ3;
  36. extern char IRQ4;
  37. extern unsigned COM3VEC;
  38. extern unsigned COM4VEC;
  39. #endif
  40.  
  41. /*
  42. **    special control characters
  43. */
  44. #define    XON        0x11
  45. #define    XOFF    0x13
  46.  
  47. /*
  48. **    8250 register defines (offsets from base)
  49. */
  50. #define    THREG    0                /* transmit hold register */
  51. #define RDREG    0                /* input data register */
  52. #define LSBDIV    0                /* least sig. byte of baud rate divisor */
  53. #define MSBDIV    1                /* most sig, only when line ctl bit 7 = 1 */
  54. #define IEREG    1                /* interrupt enable register */
  55. #define IIDREG    2                /* interrupt ID register */
  56. #define LCREG    3                /* line control register */
  57. #define MCREG    4                /* modem control register */
  58. #define LSREG    5                /* line status register */
  59. #define MSREG    6                /* modem status register */
  60.  
  61. /*
  62. **    PARITY SETTINGS used in conjunction with above
  63. */
  64. #define    NPARITY    0x00            /* no parity */
  65. #define OPARITY    0x08            /* odd parity */
  66. #define EPARITY    0x18            /* even parity */
  67. #define    MPARITY    0x28            /* mark parity */
  68. #define SPARITY    0x38            /* space parity */
  69.  
  70. /*
  71. **    DATA and STOP BIT settings
  72. */
  73. #define BIT5    0x00            /* 5 data bits */
  74. #define BIT6    0x01            /* 6 data bits */
  75. #define BIT7    0x02            /* 7 data bits */
  76. #define BIT8    0x03            /* 8 data bits */
  77. #define STOP1    0x00            /* 1 stop bit */
  78. #define STOP2    0x04            /* 2 stop bit */
  79.  
  80. /*
  81. **    Baud Rate Settings
  82. */
  83. #define B110    0x417
  84. #define    B300    0x180
  85. #define    B600    0x0C0
  86. #define B1200    0x060
  87. #define    B2400    0x030
  88. #define    B4800    0x018
  89. #define    B9600    0x00C
  90. #define    B19200    0x006
  91.  
  92. /*
  93. ** SPECIAL PURPOSE SETTINGS - internal use only
  94. */
  95. #define    BREAK_ON 0x40            /* enable transmitter break */
  96. #define    SETBAUD    0x80            /* enable access to baud rate divisor */
  97.  
  98. #define    DTR        0x01            /* turn on DTR modem signal */
  99. #define RTS        0x02            /* turn on RTS modem signal */
  100. #define    OUT2    0x08            /* enable OUT2 for interrupts */
  101. #define    LOOPBACK 0x10            /* enable loopback mode */
  102.  
  103. #define    RDINT    0x01            /* enable receive data int */
  104. #define    THREINT    0x02            /* enable transmit hold reg empty int */
  105. #define    BRKINT    0x04            /* enable break/error int */
  106. #define    MSTINT    0x08            /* enable modem change int */
  107.  
  108. #define NOPEND    0x01            /* no interrupts pending */
  109. #define INTMST    0x00            /* modem change int */
  110. #define    INTTHRE    0x02            /* THRE int */
  111. #define    INTRD    0x04            /* receive data int */
  112. #define    INTBRK    0x06            /* break/error int */
  113.  
  114. /*
  115. **    line status register values
  116. */
  117. #define    RDRDY    0x01            /* receive data ready */
  118. #define ORUNERR    0x02            /* over-run error */
  119. #define    PARERR    0x04            /* parity error */
  120. #define FRMERR    0x08            /* framing error */
  121. #define    BRKDET    0x10            /* break detect */
  122. #define THREMP    0x20            /* transmit hold reg empty */
  123. #define TSREMP    0x40            /* transmit shift reg empty */
  124. #define TIMEOUT    0x80            /* timeout */
  125.  
  126. /*
  127. **    modem status register values
  128. **        Bits 0 - 3 define which signal(s) have changed
  129. **                   with a value of 1 indicating a change has occurred
  130. **        Bits 4 - 7 indicate the current state of each of the 4 signals
  131. */
  132. #define    CTSCHG    0x01            /* delta CTS */
  133. #define DSRCHG    0x02            /* delta DSR */
  134. #define    RICHG    0x04            /* delta RI */
  135. #define    DCDCHG    0x08            /* delta DCD */
  136. #define    CTS        0x10            /* Clear To Send */
  137. #define DSR        0x20            /* Data Set Ready */
  138. #define RI        0x40            /* Ring Indicator */
  139. #define DCD        0x80            /* Data Carrier Detect */
  140.  
  141. typedef    struct
  142. {
  143.     void interrupt    (*orgvect)();        /* original vector */
  144.     unsigned    baseport;        /* baseline port */
  145.     unsigned    pvector;        /* int vector for port */
  146.     unsigned    pirq;            /* port int req mask */
  147.     volatile unsigned mdmstat;    /* current modem status */
  148.     unsigned    mdmctlr;        /* current modem control values */
  149.     volatile unsigned lasterr;    /* last error return */
  150.     unsigned    intmask;        /* current active ints */
  151.     char        *inbuff;        /* input ring buffer */
  152.     int         inbuflen;        /* size of buffer */
  153.     volatile int inbufcnt;        /* chars in buffer now */
  154.     int            inbufmrk;        /* trigger point for xoff */
  155.     volatile char *inhead;        /* pointer to insert */
  156.     volatile char *intail;        /* pointer to remove */
  157.     int            xstate;            /* TRUE if XON/XOFF active */
  158.     volatile int inxrecd;        /* TRUE if XOFF rec'd */
  159.     volatile int outxsent;        /* TRUE if XOFF sent */
  160.     char        *outbuff;        /* output ring buffer */
  161.     int            outbuflen;        /* size of buffer */
  162.     volatile int outbufcnt;        /* chars in buffer now */
  163.     volatile char *outhead;        /* pointer to insert */
  164.     volatile char *outtail;        /* pointer to remove */
  165. } COMM;
  166.  
  167. #define LITECOMM_H    1
  168. #endif
  169.